package com.qvtu.poetry.controller;

import com.qvtu.poetry.entry.Result;
import com.qvtu.poetry.entry.User;
import com.qvtu.poetry.entry.dto.UserRegisterDTO;
import com.qvtu.poetry.entry.dto.UserUpdateDTO;
import com.qvtu.poetry.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: zengxz
 * @Description: 用户controller
 * @DateTime: 2025/10/11 11:08
 **/
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 用户登录接口
     * 1. 接收登录请求参数
     * 2. 调用service层处理登录逻辑
     * 3. 返回登录结果
     */
    @PostMapping("/login")
    public Result<String> login(@RequestBody User user) {
        // 调用service层处理登录逻辑
        return userService.loginAndGenToken(user.getPassword(), user.getEmail());
    }

    /**
     * 用户注册接口
     * 1. 接收注册请求参数
     * 2. 调用service层处理注册逻辑
     * 3. 返回注册结果
     */
    @PostMapping("/register")
    public Result<String> register(@RequestBody UserRegisterDTO userRegisterDTO) {
        // 调用service层处理注册逻辑
        return userService.registerWithVerification(userRegisterDTO);
    }

    /**
     * 获取用户信息接口
     * 1. 调用service层获取当前登录用户信息
     * 2. 返回用户信息
     */
    @GetMapping("/info")
    public Result<User> userInfo() {
        // 调用service层获取用户信息
        return userService.getCurrentUserInfo();
    }

    /**
     * 更新用户信息接口
     * 1. 接收更新请求参数
     * 2. 调用service层处理更新逻辑
     * 3. 返回更新结果
     */
    @PutMapping("/update")
    public Result<String> updateUserInfo(@RequestBody UserUpdateDTO userUpdateDTO) {
        // 调用service层处理更新逻辑
        return userService.updateCurrentUserInfo(userUpdateDTO);
    }
}
